from flask import Flask, session, g
from flask_migrate import Migrate

import config
from blue_print.main import bp_main
from exts import socketio
from model import db, Usermodel

app = Flask(__name__, static_folder='static', static_url_path='/static')
app.config.from_object(config)

#注册蓝图
app.register_blueprint(bp_main)

db.init_app(app)

migrate = Migrate(app, db)

@app.before_request
def before_request():
    # 尝试从当前用户的会话中获取用户ID
    user_id = session.get('user_id')
    # 如果会话中存在用户ID，则进行下一步
    if user_id:
        # 使用ORM查询数据库，通过user_id查找对应的用户对象
        # 假设Usermodel是你的用户数据模型
        user = Usermodel.query.get(user_id)
        # 将找到的用户对象设置到全局对象g上，属性名为'user'
        # 这样在整个请求处理过程中，可以通过g.user访问到用户对象
        setattr(g, 'user', user)
    else:
        # 如果会话中没有用户ID，则设置g.user为None
        # 这样即使用户未登录，也能安全地访问g.user而不报错
        setattr(g, 'user', None)

@app.context_processor
def my_context_processor():
    return {'user': g.user}
socketio.init_app(app, cors_allowed_origins='*')
if __name__ == '__main__':
    socketio.run(app)

